package pdm.traj.service.impl;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;

import pdm.traj.entity.PartInfo;
import pdm.traj.entity.TrackPoint2;
import pdm.traj.entity.TrajQuery;
import pdm.traj.part.PartPlan;
import pdm.traj.service.GeoService;
import pdm.traj.service.PartService;
import pdm.traj.util.PathUtil;
import pdm.traj.util.timeslot.FileTimeSlotMap;

public class PartServiceImpl implements PartService {
	private PartPlan partPlan;
//	private List<PartInfo> piList;
//	private Map<PartInfo, Integer> partToIndex;
//	private Map<Integer, PartInfo> indexToPart;
//    private Map<Integer, List<String>> indexToSids;//partInfo to sid list map
//
//	public void init() {
////		System.out.println("PartService: init");
//		partToIndex = new Hashtable<PartInfo, Integer>();
//		indexToPart = new Hashtable<Integer, PartInfo>();
//		piList = partPlan.getAllPartInfo();
//		int index = 0;
//		for (PartInfo pi : piList) {
//			partToIndex.put(pi, index);
//			indexToPart.put(index, pi);
//			index++;
//		}
//	}
	public void init() {
		
	}
	
	@Override
	public PartInfo getPartInfoByTP(TrackPoint2 tp) {
		return partPlan.getPartInfoByTP(tp);
	}

    @Override
    public List<PartInfo> getPartInfoBySid(String sid) {
        return partPlan.getPartInfoBySid(sid);
    }

    @Override
	public List<PartInfo> getPartInfoByQuery(TrajQuery query) {
        return partPlan.getPartInfoByQuery(query);
//		List<PartInfo> result = new ArrayList<PartInfo>();
//		PartInfo p1 = new PartInfo();
//		p1.setIp("127.0.0.1");
//		p1.setPort("6379");
//		result.add(p1);
//		return result;
	}
    
    

    @Override
    public Integer getPIIndexByTP(TrackPoint2 tp) {
        return partPlan.getPartInfoIndexByTP(tp);
    }

    @Override
    public Integer getPIIndexByPartInfo(PartInfo partInfo) {
        return partPlan.getPartInfoIndex(partInfo);
    }

    @Override
    public List<PartInfo> getAllPartInfo() {
        return partPlan.getAllPartInfo();
    }

    public void setPartPlan(PartPlan partPlan) {
		this.partPlan = partPlan;
	}
//
//	@Override
//	public Integer getPIIndexByTP(TrackPoint2 tp) {
//		PartInfo pi = getPartInfoByTP(tp);
//		if (pi != null) {
//			return partToIndex.get(pi);
//		} else {
//			return new Integer(-1);
//		}
//	}
//
//	@Override
//	public List<PartInfo> getAllPartInfo() {
//		return partPlan.getAllPartInfo();
//	}
//
//    @Override
//    public List<String> getSidByPartInfo(PartInfo partInfo) {
//
//        return null;  //To change body of implemented methods use File | Settings | File Templates.
//    }
//
//    @Override
//    public List<String> getSidsByPartInfoIndex(int index) {
//        return partPlan.getSidsByPartInfoIndex(index);
//    }
//
//    @Override
//	public Integer getPIIndexByPartInfo(PartInfo partInfo) {
//		if (partInfo != null) {
//			return partToIndex.get(partInfo);
//		} else {
//			return new Integer(-1);
//		}
//	}

	@Override
	public String getKeyPrefix() {
		return partPlan.getKeyPrefix();
	}
}
